package com.ranyk.www.enums;

import lombok.Getter;

/**
 * CLASS_NAME: ResponseEnum.java <br/>
 *
 * @author ranyk           <br/>
 * @version V1.0           <br/>
 * @decription: 响应枚举对象  <br/>
 * @date: 2022-04-14 <br/>
 */
@Getter
@SuppressWarnings("unused")
public enum ResponseEnum {

    /**
     * 未知错误
     */
    UNKNOWN(101, "unknown", "未知错误!"),
    /**
     * 响应成功
     */
    SUCCESS(200, "success", "响应成功"),
    /**
     * 未授权
     */
    FORBIDDEN(403, "forbidden", "未授权"),
    /**
     * 没有资源
     */
    NO_RESOURCES(404, "no resources", "没有资源"),
    /**
     * 服务器响应错误
     */
    SERVER_ERROR(500, "Server Error", "服务器错误");

    /**
     * 状态值
     */
    private final Integer code;
    /**
     * 状态返回信息
     */
    private final String msg;
    /**
     * 状态信息
     */
    private final String stateInfo;

    /**
     * 全参构造函数
     *
     * @param code      状态码
     * @param msg       状态返回信息
     * @param stateInfo 状态信息
     */
    ResponseEnum(Integer code, String msg, String stateInfo) {
        this.code = code;
        this.msg = msg;
        this.stateInfo = stateInfo;
    }

    /**
     * 根据状态码获取响应枚举对象
     *
     * @param code 状态值
     * @return 反正状态枚举对象, 默认 ResponseEnum.SUCCESS
     */
    public static ResponseEnum stateOf(int code) {
        for (ResponseEnum statusEnum : values()) {
            if (statusEnum.getCode() == code) {
                return statusEnum;
            }
        }
        return SUCCESS;
    }


}
